from PublicReference.base import *


class 极诣·驭剑士主动技能(主动技能):
    # 武器CD = {'短剑':1, '巨剑':1.1, '钝器':1.05, '太刀':0.95}

    # def 等效CD(self, 武器类型):
    #     return round(self.CD / self.恢复  * self.武器CD[武器类型], 1)

    data0 = []
    次数 = []

    def 等效百分比(self, 武器类型):
        sum = 0
        for i in range(len(self.次数)):
            sum += self.data0[i][self.等级] * self.次数[i]
        return sum * (1 + self.TP成长 * self.TP等级) * self.倍率


class 极诣·驭剑士技能0(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    基础等级 = 100
    关联技能 = ['帝国剑术']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 极诣·驭剑士技能1(极诣·驭剑士主动技能):
    名称 = '帝国剑术'
    备注 = '(TP为基础精通)'
    所在等级 = 15
    等级上限 = 1
    基础等级 = 1
    基础 = {'巨剑': 180 + 206 + 128, '太刀': 123 + 171 + 196,
          '短剑': (70 + 75 + 82 + 87) * 2, '钝器': 103 + 154 + 180 + 78}
    成长 = 0
    CD = 1.0
    TP成长 = 0.10
    TP上限 = 3

    def 等效百分比(self, 武器类型):
        if self.等级 == 0:
            return 0
        else:
            return self.基础[武器类型]


class 极诣·驭剑士技能2(被动技能):
    名称 = '毁灭之巨剑精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能2 = ['所有']

    data1 = [0, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210,
             220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 330, 350, 370, 390, 410, 430, 450, 470, 490, 510]
    data2 = [0, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270,
             276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 378, 384, 390, 396]
    data3 = [0, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17,
             18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 25, 26]
    data4 = [0, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47,
             47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57]

    def 加成倍率(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 1000

    def 加成倍率2(self, 武器类型):
        return self.物理攻击力倍率(武器类型)

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 1000

    # 破军圆舞斩
    def 额外倍率1(self):
        return 1 + self.data3[self.等级] / 100

    # 恶即斩终结
    def 额外倍率2(self):
        return 1 + self.data4[self.等级] / 100


class 极诣·驭剑士技能3(被动技能):
    名称 = '波动之钝器精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能2 = ['所有']

    data1 = [0, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210,
             220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 330, 350, 370, 390, 410, 430, 450, 470, 490, 510]
    data2 = [0, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275,
             280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365, 370, 375, 380]
    data3 = [0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
             27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]
    data4 = [0, 11, 12, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 33, 34, 35,
             37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 63, 64]
    data5 = [0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
             27, 28, 29, 30, 31, 32, 33, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]

    def 加成倍率(self, 武器类型):
        if 武器类型 != '钝器':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 1000

    def 加成倍率2(self, 武器类型):
        return self.物理攻击力倍率(武器类型)

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '钝器':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 1000

    # 雷鸣千军破
    def 额外倍率1(self):
        return 1 + self.data3[self.等级] / 100

    # 幻剑术
    def 额外倍率2(self):
        return 1 + self.data4[self.等级] / 100

    # 穿云破空剑
    def 额外倍率3(self):
        return 1 + self.data5[self.等级] / 100


class 极诣·驭剑士技能4(被动技能):
    名称 = '血影之太刀精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30

    关联技能2 = ['所有']
    非关联技能2 = ['帝国剑术', '魔剑降临']

    data1 = [0, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210,
             220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 330, 350, 370, 390, 410, 430, 450, 470, 490, 510]
    data2 = [0, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27,
             27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37]
    data3 = [0, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19,
             19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29]

    def 加成倍率(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 100

    def 加成倍率2(self, 武器类型):
        return self.物理攻击力倍率(武器类型)

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 1000

    # 魔剑降临
    def 额外倍率1(self):
        return 1 + self.data3[self.等级] / 100

    冷却关联技能 = ['所有']

    def CD缩减倍率(self, 武器类型):
        if self.等级 == 0 or 武器类型 != '太刀':
            return 1.0
        else:
            return 0.9


class 极诣·驭剑士技能5(被动技能):
    名称 = '魔性之短剑精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能2 = ['所有']

    data1 = [0, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220,
             230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520]
    data2 = [0, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265,
             270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365, 370]
    data3 = [0, 34, 35, 37, 38, 40, 41, 42, 44, 45, 47, 48, 50, 51, 53, 54, 56, 57, 58, 60,
             61, 63, 64, 66, 67, 69, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89]
    data4 = [0, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135,
             140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235]

    def 加成倍率(self, 武器类型):
        if 武器类型 != '短剑':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 1000

    def 加成倍率2(self, 武器类型):
        return self.物理攻击力倍率(武器类型)

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '短剑':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 1000

    def 魔剑奥义CD倍率(self):
        return 1 - self.data3[self.等级] / 100

    # 瞬影三绝斩异常伤害
    def 额外倍率1(self):
        return 1 + self.data4[self.等级] / 100


class 极诣·驭剑士技能6(极诣·驭剑士主动技能):
    名称 = '魔剑降临'
    所在等级 = 15
    等级上限 = 60
    基础等级 = 46
    TP成长 = 0.1
    TP上限 = 5
    # 火  冰  光  暗
    data1 = [0, 84, 92, 101, 109, 118, 126, 135, 143, 152, 160, 169, 177, 186, 194, 203, 211, 220, 228, 237, 245, 254, 262, 271, 279, 288, 296, 305, 313, 322, 330, 339, 347, 356, 364,
             372, 381, 389, 398, 406, 415, 423, 432, 440, 449, 457, 466, 474, 483, 491, 500, 508, 517, 525, 534, 542, 551, 559, 568, 576, 585, 593, 602, 610, 619, 627, 636, 644, 653, 661, 670]
    data2 = [0, 84, 92, 101, 109, 118, 126, 135, 143, 152, 160, 169, 177, 186, 194, 203, 211, 220, 228, 237, 245, 254, 262, 271, 279, 288, 296, 305, 313, 322, 330, 339, 347, 356, 364,
             372, 381, 389, 398, 406, 415, 423, 432, 440, 449, 457, 466, 474, 483, 491, 500, 508, 517, 525, 534, 542, 551, 559, 568, 576, 585, 593, 602, 610, 619, 627, 636, 644, 653, 661, 670]
    data3 = [0, 24, 26, 29, 31, 34, 36, 38, 41, 43, 46, 48, 51, 53, 55, 58, 60, 63, 65, 68, 70, 72, 75, 77, 80, 82, 85, 87, 89, 92, 94, 97, 99, 102, 104, 106, 109, 111,
             114, 116, 119, 121, 123, 126, 128, 131, 133, 136, 138, 140, 143, 145, 148, 150, 153, 155, 157, 160, 162, 165, 167, 170, 172, 174, 177, 179, 182, 184, 187, 189, 191]
    data4 = [0, 55, 61, 67, 72, 78, 84, 89, 95, 100, 106, 112, 117, 123, 129, 134, 140, 145, 151, 157, 162, 168, 174, 179, 185, 190, 196, 202, 207, 213, 219, 224, 230, 235, 241, 247,
             252, 258, 264, 269, 275, 280, 286, 292, 297, 303, 309, 314, 320, 325, 331, 337, 342, 348, 354, 359, 365, 370, 376, 382, 387, 393, 399, 404, 410, 415, 421, 427, 432, 438, 444]
    data0 = [data1, data2, data3, data4]
    次数 = [0, 0, 0, 0]

    def 等效CD(self, 武器类型, 输出类型):
        return 1.0


class 极诣·驭剑士技能7(极诣·驭剑士主动技能):
    名称 = '疾影斩'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    CD = 7.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 2630, 2896, 3163, 3430, 3696, 3964, 4230, 4497, 4764, 5030, 5297, 5564, 5831, 6098, 6365, 6631, 6898, 7165, 7431, 7699, 7966, 8232, 8499, 8766, 9032, 9299, 9567, 9833, 10100, 10367, 10633, 10900, 11167, 11434, 11701, 11968,
             12234, 12501, 12768, 13034, 13302, 13569, 13835, 14102, 14369, 14635, 14902, 15169, 15436, 15703, 15970, 16236, 16503, 16770, 17036, 17304, 17570, 17837, 18104, 18370, 18637, 18904, 19171, 19438, 19705, 19971, 20238, 20505, 20771, 21039]
    data0 = [data1]
    次数 = [1]


class 极诣·驭剑士技能8(极诣·驭剑士主动技能):
    名称 = '幻剑术'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 634, 698, 763, 828, 891, 956, 1020, 1085, 1150, 1213, 1278, 1342, 1407, 1471, 1535, 1600, 1664, 1729, 1792, 1857, 1922, 1986, 2050, 2114, 2179, 2244, 2308, 2372, 2436, 2501, 2566, 2630, 2694, 2758, 2823,
             2888, 2951, 3016, 3080, 3145, 3210, 3273, 3338, 3402, 3467, 3531, 3595, 3660, 3724, 3789, 3853, 3917, 3982, 4046, 4110, 4174, 4239, 4304, 4368, 4432, 4496, 4561, 4626, 4690, 4754, 4818, 4883, 4948, 5011, 5076]
    data2 = [0, 158, 174, 190, 207, 223, 239, 255, 270, 287, 303, 319, 335, 351, 368, 384, 400, 416, 432, 448, 464, 480, 496, 512, 529, 545, 561, 577, 593, 609, 625, 641, 657, 673, 690, 706, 722,
             738, 754, 770, 786, 802, 818, 834, 850, 867, 883, 899, 915, 931, 947, 963, 979, 995, 1011, 1028, 1044, 1060, 1076, 1092, 1109, 1124, 1140, 1156, 1172, 1189, 1205, 1221, 1237, 1253, 1270]
    data0 = [data1, data2]

    def __init__(self):
        self.次数 = [6, 0]


class 极诣·驭剑士技能9(极诣·驭剑士主动技能):
    名称 = '升龙剑'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 693, 764, 834, 905, 975, 1046, 1116, 1187, 1257, 1328, 1397, 1468, 1538, 1609, 1679, 1750, 1820, 1890, 1961, 2031, 2102, 2172, 2243, 2312, 2383, 2453, 2524, 2594, 2665, 2735, 2806, 2876, 2947, 3017, 3088,
             3158, 3229, 3298, 3369, 3439, 3510, 3580, 3650, 3721, 3791, 3862, 3932, 4003, 4073, 4144, 4213, 4284, 4354, 4425, 4495, 4566, 4636, 4707, 4777, 4848, 4918, 4989, 5059, 5130, 5199, 5270, 5340, 5410, 5481, 5551]
    data2 = [0, 1306, 1438, 1570, 1704, 1836, 1969, 2101, 2233, 2366, 2499, 2631, 2764, 2896, 3029, 3161, 3293, 3427, 3559, 3691, 3824, 3956, 4089, 4222, 4354, 4487, 4619, 4751, 4884, 5017, 5150, 5282, 5414, 5547, 5679,
             5811, 5945, 6077, 6210, 6342, 6474, 6607, 6740, 6872, 7005, 7137, 7270, 7402, 7534, 7668, 7800, 7932, 8065, 8197, 8330, 8463, 8595, 8728, 8860, 8992, 9125, 9257, 9390, 9523, 9655, 9788, 9920, 10052, 10186, 10318, 10450]
    data0 = [data1, data2]
    次数 = [4, 1]


class 极诣·驭剑士技能10(被动技能):
    名称 = '魔剑觉醒'
    所在等级 = 30
    等级上限 = 15
    基础等级 = 5

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.035 + 0.015 * self.等级, 5)


class 极诣·驭剑士技能11(极诣·驭剑士主动技能):
    名称 = '穿云破空剑'
    备注 = '(不可抓取)'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 26
    CD = 12.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 762, 884, 1005, 1127, 1249, 1370, 1491, 1612, 1734, 1856, 1977, 2099, 2221, 2342, 2464, 2586, 2707, 2829, 2950, 3071, 3193, 3314, 3436, 3558, 3679, 3801, 3922, 4044, 4166, 4287, 4409, 4530, 4651, 4773,
             4894, 5016, 5138, 5259, 5381, 5503, 5624, 5746, 5868, 5989, 6110, 6231, 6353, 6475, 6596, 6718, 6840, 6961, 7083, 7204, 7326, 7448, 7569, 7690, 7812, 7933, 8055, 8176, 8298, 8420, 8541, 8663, 8785, 8906, 9028, 9150]
    data2 = [0, 510, 591, 673, 754, 835, 917, 998, 1080, 1161, 1243, 1324, 1406, 1487, 1569, 1650, 1731, 1812, 1894, 1975, 2056, 2138, 2219, 2301, 2382, 2464, 2545, 2627, 2708, 2790, 2870, 2952, 3033, 3115, 3196, 3277,
             3359, 3440, 3522, 3603, 3685, 3766, 3848, 3929, 4010, 4091, 4173, 4254, 4336, 4417, 4498, 4580, 4661, 4743, 4824, 4906, 4987, 5069, 5150, 5231, 5312, 5394, 5475, 5557, 5638, 5719, 5801, 5882, 5964, 6045, 6127]
    data3 = [0, 599, 694, 790, 885, 981, 1076, 1171, 1267, 1363, 1458, 1553, 1650, 1745, 1840, 1935, 2031, 2127, 2222, 2318, 2413, 2509, 2604, 2700, 2795, 2890, 2987, 3082, 3177, 3272, 3369, 3464, 3559, 3654, 3750, 3846,
             3941, 4037, 4132, 4228, 4323, 4419, 4514, 4610, 4706, 4801, 4896, 4991, 5088, 5183, 5278, 5374, 5470, 5565, 5660, 5756, 5851, 5947, 6043, 6138, 6233, 6329, 6425, 6520, 6615, 6710, 6807, 6902, 6997, 7093, 7189]
    data0 = [data1, data2, data3]

    def __init__(self):
        self.次数 = [1, 8, 1]

    def 等效百分比(self, 武器类型):
        return self.data1[self.等级] * self.次数[0] * self.倍率 + self.data2[self.等级] * (self.次数[1] + self.TP等级) * self.倍率 + self.data3[self.等级] * self.次数[2] * self.倍率


class 极诣·驭剑士技能12(极诣·驭剑士主动技能):
    名称 = '魔剑奥义'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    是否主动 = 0

    # 火  冰  光  暗
    data1 = [0, 745, 820, 896, 971, 1047, 1123, 1198, 1274, 1349, 1425, 1501, 1576, 1652, 1727, 1803, 1879, 1954, 2030, 2105, 2181, 2257, 2332, 2408, 2483, 2559, 2634, 2710, 2786, 2861, 2937, 3012, 3088, 3164, 3239,
             3315, 3390, 3466, 3542, 3617, 3693, 3768, 3844, 3920, 3995, 4071, 4146, 4222, 4298, 4373, 4449, 4524, 4600, 4676, 4751, 4827, 4902, 4978, 5053, 5129, 5205, 5280, 5356, 5431, 5507, 5583, 5658, 5734, 5809, 5885, 5961]
    data2 = [0, 820, 902, 986, 1068, 1152, 1235, 1318, 1401, 1484, 1568, 1651, 1734, 1817, 1900, 1983, 2067, 2149, 2233, 2316, 2399, 2483, 2565, 2649, 2731, 2815, 2897, 2981, 3065, 3147, 3231, 3313, 3397, 3480, 3563,
             3647, 3729, 3813, 3896, 3979, 4062, 4145, 4228, 4312, 4395, 4478, 4561, 4644, 4728, 4810, 4894, 4976, 5060, 5144, 5226, 5310, 5392, 5476, 5558, 5642, 5726, 5808, 5892, 5974, 6058, 6141, 6224, 6307, 6390, 6474, 6557]
    data3 = [0, 820, 902, 986, 1068, 1152, 1235, 1318, 1401, 1484, 1568, 1651, 1734, 1817, 1900, 1983, 2067, 2149, 2233, 2316, 2399, 2483, 2565, 2649, 2731, 2815, 2897, 2981, 3065, 3147, 3231, 3313, 3397, 3480, 3563,
             3647, 3729, 3813, 3896, 3979, 4062, 4145, 4228, 4312, 4395, 4478, 4561, 4644, 4728, 4810, 4894, 4976, 5060, 5144, 5226, 5310, 5392, 5476, 5558, 5642, 5726, 5808, 5892, 5974, 6058, 6141, 6224, 6307, 6390, 6474, 6557]
    data4 = [0, 745, 820, 896, 971, 1047, 1123, 1198, 1274, 1349, 1425, 1501, 1576, 1652, 1727, 1803, 1879, 1954, 2030, 2105, 2181, 2257, 2332, 2408, 2483, 2559, 2634, 2710, 2786, 2861, 2937, 3012, 3088, 3164, 3239,
             3315, 3390, 3466, 3542, 3617, 3693, 3768, 3844, 3920, 3995, 4071, 4146, 4222, 4298, 4373, 4449, 4524, 4600, 4676, 4751, 4827, 4902, 4978, 5053, 5129, 5205, 5280, 5356, 5431, 5507, 5583, 5658, 5734, 5809, 5885, 5961]
    data0 = [data1, data2, data3, data4]
    次数 = [0, 0, 0, 0]

    TP上限 = 5
    短精CD = 1

    def 等效CD(self, 武器类型, 输出类型):
        if 武器类型 != '短剑':
            return round(5 * (1 - 0.1 * self.TP等级), 1)
        else:
            return round(self.短精CD * 5 * (1 - 0.1 * self.TP等级), 2)


class 极诣·驭剑士技能13(极诣·驭剑士主动技能):
    名称 = '破军旋舞斩'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 24
    CD = 15.0
    TP成长 = 0.10
    TP上限 = 5

    data1 = [0, 2203, 2554, 2906, 3256, 3608, 3959, 4310, 4662, 5013, 5364, 5715, 6067, 6418, 6770, 7120, 7471, 7823, 8174, 8526, 8877, 9228, 9579, 9930, 10282, 10633, 10984, 11335, 11687, 12038, 12390, 12741, 13091, 13443, 13794, 14146, 14497,
             14848, 15199, 15550, 15902, 16253, 16605, 16955, 17307, 17658, 18010, 18361, 18711, 19063, 19414, 19766, 20117, 20468, 20819, 21170, 21522, 21873, 22225, 22575, 22927, 23278, 23630, 23981, 24331, 24683, 25034, 25386, 25737, 26089, 26439]
    data0 = [data1]
    次数 = [3]
    倍率 = 1.2  # 蓄力增加20%

    # 破空剑舞
    # 旋转攻击时向前方发射1道剑气
    # 剑气攻击力为[破军旋舞斩]整体攻击力的19%
    # 剑气攻击范围 +30%
    # 剑气攻击力 +14%
    # 半月斩击范围 +30%
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.24
        elif x == 1:
            self.倍率 *= 1.33

    def 护石描述(self, x):
        if x == 0:
            temp = "<font color='#FF00FF'>破空剑舞</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[破军旋舞斩]<br>"
            temp += "旋转攻击时向前方发射1道剑气<br>"
            temp += "剑气攻击力为[破军旋舞斩]整体攻击力的19%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "剑气攻击范围 +30%<br>"
            temp += "剑气攻击力 +5%<br>"
            temp += "半月斩击范围 +30%"
        elif x == 1:
            temp = "<font color='#FF00FF'>破空剑舞</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[破军旋舞斩]<br>"
            temp += "旋转攻击时向前方发射1道剑气<br>"
            temp += "剑气攻击力为[破军旋舞斩]整体攻击力的19%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "剑气攻击范围 +30%<br>"
            temp += "剑气攻击力 +14%<br>"
            temp += "半月斩击范围 +30%"
        return temp


class 极诣·驭剑士技能14(极诣·驭剑士主动技能):
    名称 = '瞬影三绝斩'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    基础 = 5922.08
    成长 = 668.93
    CD = 15.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 2197, 2420, 2644, 2867, 3090, 3312, 3535, 3758, 3981, 4204, 4428, 4650, 4873, 5096, 5319, 5542, 5765, 5988, 6211, 6434, 6657, 6880, 7103, 7326, 7549, 7771, 7995, 8218, 8441, 8664, 8887, 9110, 9332, 9555, 9779, 10002, 10225,
             10448, 10670, 10893, 11116, 11339, 11563, 11786, 12009, 12231, 12454, 12677, 12900, 13123, 13347, 13570, 13792, 14015, 14238, 14461, 14684, 14907, 15130, 15353, 15576, 15799, 16022, 16245, 16468, 16690, 16914, 17137, 17360, 17583]
    # 冰属性附加伤害，计算公式未知
    data2 = [0, 149, 165, 180, 195, 210, 230, 245, 260, 275, 290, 305, 320, 335, 355, 365, 385, 400, 415, 430, 445, 460, 475, 490, 510, 525, 540, 555, 570, 585, 600, 615, 630, 645, 665, 680,
             695, 710, 725, 740, 755, 770, 785, 805, 820, 835, 850, 865, 880, 895, 910, 925, 945, 960, 975, 990, 1005, 1020, 1035, 1050, 1070, 1085, 1100, 1115, 1130, 1145, 1160, 1175, 1190, 1205, 1225]
    data0 = [data1]
    次数 = [3]


class 极诣·驭剑士技能15(极诣·驭剑士主动技能):
    名称 = '雷鸣千军破'
    所在等级 = 40
    等级上限 = 60
    基础等级 = 33
    CD = 20.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 409, 450, 492, 533, 575, 616, 658, 700, 741, 783, 824, 866, 908, 949, 990, 1031, 1073, 1115, 1156, 1198, 1239, 1281, 1323, 1364, 1406, 1447, 1489, 1530, 1571, 1613, 1654, 1696, 1738, 1779, 1821,
             1862, 1904, 1946, 1987, 2029, 2070, 2111, 2153, 2194, 2236, 2277, 2319, 2361, 2402, 2444, 2486, 2527, 2569, 2610, 2651, 2693, 2734, 2776, 2817, 2859, 2901, 2942, 2984, 3025, 3067, 3109, 3150, 3191, 3232, 3274]
    data2 = [0, 506, 557, 609, 660, 711, 763, 814, 866, 917, 969, 1020, 1071, 1123, 1174, 1226, 1277, 1329, 1380, 1431, 1483, 1534, 1586, 1637, 1688, 1739, 1790, 1842, 1893, 1945, 1996, 2048, 2099, 2150, 2202, 2253,
             2305, 2356, 2408, 2459, 2510, 2562, 2613, 2665, 2716, 2768, 2819, 2870, 2922, 2972, 3024, 3075, 3127, 3178, 3230, 3281, 3332, 3384, 3435, 3487, 3538, 3590, 3641, 3692, 3744, 3795, 3847, 3898, 3950, 4001, 4052]
    data3 = [0, 796, 877, 958, 1038, 1119, 1200, 1281, 1361, 1442, 1523, 1604, 1684, 1765, 1846, 1927, 2007, 2088, 2169, 2250, 2330, 2411, 2492, 2573, 2653, 2734, 2815, 2896, 2976, 3057, 3138, 3219, 3299, 3380, 3461,
             3542, 3622, 3703, 3784, 3865, 3945, 4026, 4107, 4188, 4268, 4349, 4430, 4511, 4591, 4672, 4753, 4834, 4914, 4995, 5076, 5157, 5237, 5318, 5399, 5480, 5560, 5641, 5722, 5803, 5883, 5964, 6045, 6126, 6206, 6287, 6368]
    data0 = [data1, data1, data2, data3]

    def __init__(self):
        self.次数 = [3, 8, 8, 0]

    def 等效百分比(self, 武器类型):
        if 武器类型 == '钝器':
            #temp = []
            #temp.append(self.次数[0] / 3)
            # temp.append(self.次数[1])
            # temp.append(self.次数[2])
            # temp.append(1)
            self.次数[0] /= 3
            self.次数[3] = 1
            # 钝器斩击只有一段，但是附带冲击波
        return super().等效百分比(武器类型)

    # 千雷轰鸣
    # 从地面召唤的巨剑数量 +25%
    # 斩击和从地面召唤的巨剑斩击物理攻击力 +21%
    # 巨剑冲击波攻击范围 +40%
    是否有护石 = 1
    是否装备护石 = 0
    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.次数 = [3 * 1.07, 8 * 1.07 * 1.25, 8 * 1.25, 0]
            self.是否装备护石 = 1
        elif x == 1:
            self.次数 = [3 * 1.21, 8 * 1.21 * 1.25, 8 * 1.25, 0]
            self.是否装备护石 = 1

    def 护石描述(self, x):
        if x == 0:
            temp = "<font color='#FF00FF'>千雷轰鸣</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[雷鸣千军破]<br>"
            temp += "从地面召唤的巨剑数量 +25%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "斩击和从地面召唤的巨剑斩击物理攻击力 +7%<br>"
            temp += "巨剑冲击波攻击范围 +40%"
        elif x == 1:
            temp = "<font color='#FF00FF'>千雷轰鸣</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[雷鸣千军破]<br>"
            temp += "从地面召唤的巨剑数量 +25%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "斩击和从地面召唤的巨剑斩击物理攻击力 +21%<br>"
            temp += "巨剑冲击波攻击范围 +40%"
        return temp


class 极诣·驭剑士技能16(极诣·驭剑士主动技能):
    名称 = '恶即斩'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    CD = 40.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 888, 978, 1069, 1158, 1249, 1339, 1429, 1519, 1609, 1699, 1790, 1879, 1970, 2060, 2150, 2240, 2330, 2420, 2510, 2600, 2690, 2781, 2870, 2961, 3051, 3141, 3231, 3321, 3411, 3502, 3591, 3682, 3772, 3862,
             3952, 4043, 4132, 4223, 4312, 4403, 4493, 4583, 4673, 4764, 4853, 4944, 5034, 5124, 5214, 5304, 5394, 5485, 5574, 5665, 5755, 5845, 5935, 6026, 6115, 6206, 6295, 6386, 6476, 6566, 6656, 6747, 6836, 6927, 7016, 7107]
    data2 = [0, 7304, 8046, 8787, 9528, 10269, 11010, 11750, 12491, 13232, 13973, 14714, 15456, 16197, 16938, 17679, 18420, 19161, 19902, 20643, 21384, 22126, 22867, 23608, 24349, 25090, 25830, 26571, 27312, 28053, 28795, 29536, 30277, 31018, 31759, 32500,
             33241, 33982, 34723, 35465, 36206, 36947, 37688, 38429, 39170, 39910, 40651, 41392, 42133, 42875, 43616, 44357, 45098, 45839, 46580, 47321, 48062, 48803, 49545, 50286, 51027, 51768, 52509, 53250, 53990, 54731, 55472, 56214, 56955, 57696, 58437]
    data0 = [data1, data2]
    次数 = [15, 1]

    # 斩恶者
    # 终结攻击前使用[驭剑术]时， 自动发动终结攻击
    # 连续斩击攻击力 +19%
    # 冷却时间 -5%
    # 多段攻击次数固定为最大值
    # 终结攻击力 +38%
    # 连续斩击攻击范围 +30%
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.次数 = [15 * 1.19, 1.17]
            self.CD *= 0.95
        elif x == 1:
            self.次数 = [15 * 1.19, 1.38]
            self.CD *= 0.95

    def 护石描述(self, x):
        if x == 0:
            temp = "<font color='#FF00FF'>斩恶者</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[恶即斩]<br>"
            temp += "终结攻击前使用[驭剑术]时， 自动发动终结攻击<br>"
            temp += "连续斩击攻击力 +19%<br>"
            temp += "冷却时间 -5%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "多段攻击次数固定为最大值<br>"
            temp += "终结攻击力 +17%<br>"
            temp += "连续斩击攻击范围 +30%"
        elif x == 1:
            temp = "<font color='#FF00FF'>斩恶者</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[恶即斩]<br>"
            temp += "终结攻击前使用[驭剑术]时， 自动发动终结攻击<br>"
            temp += "连续斩击攻击力 +19%<br>"
            temp += "冷却时间 -5%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "多段攻击次数固定为最大值<br>"
            temp += "终结攻击力 +38%<br>"
            temp += "连续斩击攻击范围 +30%"
        return temp


class 极诣·驭剑士技能17(极诣·驭剑士主动技能):
    名称 = '极·驭剑术(时空斩)'
    所在等级 = 50
    等级上限 = 40
    基础等级 = 12
    CD = 145.0
    data1 = [0, 9714, 11968, 14220, 16472, 18726, 20978, 23231, 25484, 27736, 29990, 32242, 34495, 36748, 39000, 41253, 43506, 45758, 48011, 50264, 52517, 54770, 57022, 59275, 61528, 63781, 66033, 68286, 70539, 72791, 75045, 77297, 79550, 81803, 84055, 86309, 88561,
             90813, 93067, 95319, 97571, 99825, 102077, 104330, 106583, 108835, 111089, 113341, 115594, 117847, 120099, 122352, 124605, 126858, 129110, 131363, 133616, 135869, 138121, 140374, 142627, 144880, 147132, 149385, 151638, 153890, 156144, 158396, 160649, 162902, 165154]
    data2 = [0, 19430, 23935, 28441, 32946, 37451, 41957, 46463, 50968, 55473, 59979, 64485, 68990, 73495, 78001, 82507, 87012, 91517, 96023, 100529, 105034, 109540, 114045, 118550, 123056, 127562, 132068, 136572, 141078, 145584, 150090, 154594, 159100, 163606, 168111, 172617,
             177122, 181628, 186133, 190639, 195144, 199650, 204155, 208661, 213167, 217671, 222177, 226683, 231189, 235693, 240199, 244705, 249210, 253716, 258221, 262727, 267232, 271738, 276243, 280749, 285254, 289760, 294266, 298770, 303276, 307782, 312288, 316793, 321298, 325804, 330310]
    data0 = [data1, data2]
    次数 = [3, 1]


class 极诣·驭剑士技能18(被动技能):
    名称 = '斩魂术'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(0.995 + 0.02 * self.等级, 5)


class 极诣·驭剑士技能19(极诣·驭剑士主动技能):
    名称 = '裂刃天冲'
    所在等级 = 60
    等级上限 = 40
    基础等级 = 23
    CD = 30.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 2909, 3204, 3499, 3794, 4090, 4385, 4680, 4975, 5270, 5566, 5861, 6156, 6450, 6746, 7041, 7336, 7631, 7927, 8222, 8517, 8812, 9108, 9403, 9698, 9992, 10288, 10583, 10878, 11173, 11469, 11764, 12059, 12354, 12650, 12945, 13240,
             13534, 13830, 14125, 14420, 14715, 15010, 15306, 15601, 15896, 16191, 16487, 16782, 17076, 17371, 17667, 17962, 18257, 18552, 18848, 19143, 19438, 19733, 20029, 20324, 20619, 20913, 21209, 21504, 21799, 22094, 22390, 22685, 22980, 23275]
    data2 = [0, 454, 500, 547, 592, 639, 685, 730, 777, 823, 870, 915, 962, 1008, 1053, 1100, 1146, 1192, 1238, 1284, 1330, 1376, 1423, 1469, 1515, 1561, 1607, 1653, 1699, 1746, 1791, 1838, 1884, 1930, 1976, 2022,
             2069, 2114, 2161, 2207, 2252, 2299, 2345, 2391, 2437, 2484, 2530, 2575, 2622, 2668, 2714, 2760, 2806, 2852, 2898, 2945, 2990, 3037, 3083, 3129, 3175, 3221, 3268, 3313, 3360, 3406, 3451, 3498, 3544, 3590, 3636]
    data3 = [0, 8000, 8812, 9624, 10435, 11248, 12059, 12870, 13682, 14494, 15306, 16117, 16930, 17741, 18552, 19364, 20176, 20988, 21799, 22610, 23423, 24234, 25046, 25858, 26670, 27481, 28292, 29105, 29916, 30728, 31539, 32351, 33163, 33974, 34787,
             35598, 36410, 37221, 38033, 38845, 39656, 40469, 41280, 42091, 42903, 43715, 44527, 45338, 46150, 46962, 47773, 48585, 49397, 50209, 51020, 51831, 52644, 53455, 54267, 55078, 55890, 56702, 57513, 58326, 59137, 59949, 60760, 61572, 62384, 63195, 64007]
    data0 = [data1, data2, data3]
    # 怪物高度低会变成[1,8,1]
    次数 = [1, 9, 1]

    # 穿云刃
    # 与魔法剑一起前冲并发动爆炸攻击
    #- 删除刺击和升空多段攻击
    # - 前冲爆炸攻击力为原爆炸攻击力的201%
    # 按向前方向键时增加前冲范围
    # 前冲爆炸攻击范围 +30%
    # 前冲爆炸攻击力 +27%
    # 冷却时间 -5%
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.次数 = [0, 0, 2.01 + 0.11]
            self.CD *= 0.95
        elif x == 1:
            self.次数 = [0, 0, 2.01 + 0.27]
            self.CD *= 0.95

    def 护石描述(self, x):
        if x == 0:
            temp = "<font color='#FF00FF'>穿云刃</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[裂刃天冲]<br>"
            temp += "与魔法剑一起前冲并发动爆炸攻击<br>"
            temp += "- 删除刺击和升空多段攻击<br>"
            temp += "- 前冲爆炸攻击力为原爆炸攻击力的201%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "按向前方向键时增加前冲范围<br>"
            temp += "前冲爆炸攻击范围 +30%<br>"
            temp += "前冲爆炸攻击力 +11%<br>"
            temp += "冷却时间 -5%"
        elif x == 1:
            temp = "<font color='#FF00FF'>穿云刃</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[裂刃天冲]<br>"
            temp += "与魔法剑一起前冲并发动爆炸攻击<br>"
            temp += "- 删除刺击和升空多段攻击<br>"
            temp += "- 前冲爆炸攻击力为原爆炸攻击力的201%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "按向前方向键时增加前冲范围<br>"
            temp += "前冲爆炸攻击范围 +30%<br>"
            temp += "前冲爆炸攻击力 +27%<br>"
            temp += "冷却时间 -5%"
        return temp


class 极诣·驭剑士技能20(极诣·驭剑士主动技能):
    名称 = '幻剑阵'
    所在等级 = 70
    等级上限 = 40
    基础等级 = 18
    CD = 50.0
    TP成长 = 0.10
    TP上限 = 5
    data1 = [0, 3463, 3814, 4166, 4517, 4869, 5220, 5571, 5923, 6274, 6626, 6977, 7329, 7680, 8031, 8383, 8734, 9086, 9437, 9789, 10140, 10491, 10843, 11194, 11545, 11896, 12248, 12599, 12950, 13302, 13653, 14005, 14356, 14708, 15059, 15410, 15762,
             16113, 16465, 16816, 17168, 17519, 17870, 18222, 18573, 18925, 19276, 19628, 19979, 20330, 20681, 21032, 21384, 21735, 22087, 22438, 22790, 23141, 23492, 23844, 24195, 24547, 24898, 25250, 25601, 25952, 26304, 26655, 27007, 27358, 27710]
    data2 = [0, 13854, 15260, 16666, 18071, 19476, 20882, 22288, 23693, 25099, 26505, 27910, 29315, 30721, 32127, 33532, 34938, 36344, 37749, 39154, 40560, 41966, 43371, 44777, 46182, 47588, 48993, 50399, 51805, 53210, 54615, 56021, 57427, 58832, 60238, 61644,
             63050, 64454, 65860, 67266, 68671, 70077, 71483, 72888, 74293, 75699, 77105, 78510, 79916, 81321, 82727, 84132, 85538, 86944, 88350, 89755, 91160, 92566, 93971, 95377, 96783, 98189, 99593, 100999, 102405, 103810, 105216, 106622, 108027, 109432, 110838]
    data0 = [data1, data2]
    次数 = [4, 1]

    # 天衍剑
    # 在前方生成幻剑阵后落下强化魔剑并引发爆炸
    #- 删除幻剑移动攻击和强制控制效果
    # - 魔剑爆炸攻击力为终结攻击力的50%%
    #- 魔剑爆炸造成4段攻击伤害
    # 魔剑爆炸攻击力 +12%
    # 魔剑爆炸范围 +30%
    # 魔剑爆炸攻击力 +14%
    # 剑气移动速度 +30%
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.次数 = [0, 0.50 * 4 * 1.18]
        elif x == 1:
            self.次数 = [0, 0.50 * 4 * 1.26]

    def 护石描述(self, x):
        if x == 0:
            temp = "<font color='#FF00FF'>天衍剑</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[极 · 驭剑术 (幻剑阵)]<br>"
            temp += "在前方生成幻剑阵后落下强化魔剑并引发爆炸<br>"
            temp += "- 删除幻剑移动攻击和强制控制效果<br>"
            temp += "- 魔剑爆炸攻击力为终结攻击力的50%<br>"
            temp += "- 魔剑爆炸造成4段攻击伤害<br>"
            temp += "魔剑爆炸攻击力 +12%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "魔剑爆炸范围 +30%<br>"
            temp += "魔剑爆炸攻击力 +6%<br>"
            temp += "剑气移动速度 +30%"
        elif x == 1:
            temp = "<font color='#FF00FF'>天衍剑</font>"
            temp += "<br><br><font color='#68D5ED'>"
            temp += "[极 · 驭剑术 (幻剑阵)]<br>"
            temp += "在前方生成幻剑阵后落下强化魔剑并引发爆炸<br>"
            temp += "- 删除幻剑移动攻击和强制控制效果<br>"
            temp += "- 魔剑爆炸攻击力为终结攻击力的50%<br>"
            temp += "- 魔剑爆炸造成4段攻击伤害<br>"
            temp += "魔剑爆炸攻击力 +12%<br>"
            temp += "<br>-护石附加效果：<br>"
            temp += "魔剑爆炸范围 +30%<br>"
            temp += "魔剑爆炸攻击力 +14%<br>"
            temp += "剑气移动速度 +30%"
        return temp


class 极诣·驭剑士技能21(极诣·驭剑士主动技能):
    名称 = '破剑阵'
    所在等级 = 80
    等级上限 = 40
    基础等级 = 13
    CD = 45.0
    data1 = [0, 1359, 1496, 1634, 1772, 1910, 2048, 2186, 2324, 2462, 2599, 2737, 2875, 3013, 3151, 3289, 3427, 3565, 3703, 3840, 3978, 4116, 4254, 4392, 4530, 4668, 4806, 4944, 5081, 5219, 5357, 5495, 5632, 5770, 5909, 6047,
             6185, 6322, 6460, 6598, 6736, 6873, 7011, 7150, 7288, 7426, 7563, 7701, 7839, 7977, 8114, 8252, 8390, 8529, 8666, 8804, 8942, 9080, 9218, 9355, 9493, 9631, 9770, 9907, 10045, 10183, 10321, 10459, 10596, 10734, 10872]
    data2 = [0, 2718, 2993, 3270, 3545, 3821, 4096, 4372, 4648, 4924, 5199, 5475, 5751, 6027, 6303, 6578, 6854, 7130, 7406, 7681, 7957, 8232, 8509, 8785, 9060, 9336, 9611, 9888, 10163, 10439, 10714, 10990, 11266, 11542, 11818, 12093, 12370,
             12645, 12921, 13196, 13472, 13748, 14024, 14299, 14575, 14851, 15127, 15403, 15678, 15954, 16230, 16506, 16781, 17057, 17332, 17609, 17885, 18160, 18436, 18711, 18988, 19263, 19539, 19814, 20090, 20366, 20642, 20918, 21193, 21470, 21745]
    data3 = [0, 19027, 20957, 22888, 24818, 26748, 28678, 30609, 32539, 34470, 36399, 38330, 40260, 42190, 44121, 46050, 47981, 49911, 51842, 53772, 55703, 57632, 59563, 61493, 63424, 65354, 67284, 69214, 71145, 73075, 75006, 76935, 78866, 80796, 82727, 84657, 86588,
             88517, 90448, 92378, 94309, 96239, 98169, 100099, 102030, 103960, 105890, 107820, 109750, 111681, 113611, 115542, 117472, 119402, 121332, 123263, 125193, 127124, 129053, 130984, 132914, 134845, 136775, 138705, 140635, 142566, 144496, 146427, 148357, 150287, 152217]
    data4 = [0, 4878, 5373, 5869, 6364, 6858, 7353, 7849, 8344, 8838, 9333, 9829, 10323, 10818, 11313, 11809, 12303, 12798, 13293, 13788, 14283, 14778, 15273, 15768, 16263, 16758, 17252, 17748, 18243, 18738, 19232, 19728, 20223, 20718, 21212, 21708,
             22203, 22697, 23192, 23688, 24183, 24677, 25172, 25668, 26162, 26657, 27152, 27648, 28142, 28637, 29132, 29628, 30122, 30617, 31112, 31607, 32102, 32597, 33092, 33587, 34082, 34577, 35071, 35567, 36062, 36557, 37051, 37547, 38042, 38536, 39031]
    data0 = [data1, data2, data3, data4]
    次数 = [7, 7, 1, 0]
    次数倍率 = [1, 1, 1, 1]
    #强制中断时为 [0, 0, 0, 8]

    # 破剑阵
    # - 放置魔剑后， 立即拔出古代魔剑， 跳跃至空中后， 向地面使用下劈
    # - 终结爆炸攻击力 +250%
    # - 驭剑术柔化时， 维持魔剑爆炸功能， 终结爆炸攻击力与柔化爆炸攻击力 +10%
    # - 终结爆炸攻击力与柔化爆炸攻击力额外增加 24%
    # - 终结爆炸与柔化爆炸范围 +10%
    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        self.次数倍率 = [0, 0, 2.5 * 1.34, 1.34]

    def 等效百分比(self, 武器类型):
        sum = 0
        for i in range(len(self.次数)):
            sum += self.data0[i][self.等级] * self.次数[i] * self.次数倍率[i]
        return sum * (1 + self.TP成长 * self.TP等级) * self.倍率


class 极诣·驭剑士技能22(被动技能):
    名称 = '帝皇盟约'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.28 + 0.02 * self.等级, 5)

    def 物理攻击力倍率(self, 武器类型):
        return self.加成倍率(武器类型)


class 极诣·驭剑士技能23(极诣·驭剑士主动技能):
    名称 = '飓风魔剑'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    CD = 25.0

    # 魔剑奥义额外增伤
    额外百分比 = 0
    额外倍率 = 1
    魔剑层数上限 = 5
    魔剑增加量 = 0.03

    data1 = [0, 406, 448, 489, 530, 570, 612, 653, 694, 736, 777, 818, 859, 901, 942, 983, 1025, 1066, 1107, 1148, 1190, 1230, 1271, 1313, 1354, 1395, 1436, 1478, 1519, 1560, 1602, 1643, 1684, 1726, 1767, 1808,
             1849, 1890, 1931, 1972, 2014, 2055, 2096, 2137, 2179, 2220, 2261, 2303, 2344, 2385, 2426, 2468, 2509, 2550, 2591, 2632, 2673, 2714, 2756, 2797, 2838, 2880, 2921, 2962, 3004, 3045, 3086, 3127, 3169, 3210, 3250]
    data2 = [0, 7141, 7865, 8590, 9314, 10038, 10763, 11488, 12211, 12936, 13661, 14385, 15110, 15834, 16558, 17283, 18008, 18731, 19456, 20181, 20905, 21630, 22354, 23078, 23803, 24528, 25251, 25976, 26701, 27425, 28150, 28874, 29598, 30323, 31048, 31771,
             32496, 33221, 33945, 34670, 35394, 36119, 36843, 37568, 38292, 39016, 39741, 40466, 41190, 41914, 42639, 43363, 44088, 44812, 45536, 46261, 46986, 47710, 48434, 49159, 49883, 50608, 51332, 52056, 52781, 53506, 54230, 54954, 55679, 56403, 57128]
    data0 = [data1, data2]
    次数 = [40, 1]
    次数倍率 = [1, 1]
    # 飓风魔剑
    # - 向前方发射属性魔剑， 以命中的敌人为中心， 产生魔力的风暴， 造成伤害后爆炸
    # - 魔力风暴多段攻击力 +15%
    #- 新增魔力风暴多段攻击聚怪功能
    #- 删除按住技能键的技能
    # - 魔力爆炸攻击力 +65%
    # - [魔剑奥义]保存次数上限 -2次
    # - 每个魔剑阶段数额外增加量额外增加2%
    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        self.次数倍率 = [1.15, 1.65]
        self.额外倍率 = 1.65
        self.魔剑层数上限 = 3
        self.魔剑增加量 = 0.05

    def 等效百分比(self, 武器类型):
        sum = self.额外百分比 * self.额外倍率
        for i in range(len(self.次数)):
            sum += self.data0[i][self.等级] * self.次数[i] * self.次数倍率[i]
        return sum * self.倍率


class 极诣·驭剑士技能24(极诣·驭剑士主动技能):
    名称 = '誓约之剑：雷沃汀'
    所在等级 = 85
    等级上限 = 40
    基础等级 = 5
    CD = 180.0
    data1 = [0, 96690, 119110, 141531, 163952, 186373, 208794, 231215, 253636, 276057, 298478, 320899, 343320, 365741, 388162, 410583, 433004, 455425, 477846, 500267, 522688, 545109, 567530, 589950, 612371, 634792, 657213, 679634, 702055, 724476, 746897, 769318, 791739, 814160, 836581, 859002, 881423,
             903844, 926265, 948686, 971107, 993528, 1015949, 1038370, 1060790, 1083211, 1105632, 1128053, 1150474, 1172895, 1195316, 1217737, 1240158, 1262579, 1285000, 1307421, 1329842, 1352263, 1374684, 1397105, 1419526, 1441947, 1464368, 1486789, 1509210, 1531630, 1554051, 1576472, 1598893, 1621314, 1643735]
    data0 = [data1]
    次数 = [1]


class 极诣·驭剑士技能25(被动技能):
    名称 = '剑心：魔剑觉醒'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 4

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 极诣·驭剑士技能26(极诣·驭剑士主动技能):
    名称 = '极诣·驭剑术：聚魔剑'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 6
    CD = 60
    data1 = [0, 21626, 23820, 26014, 28208, 30402, 32596, 34790, 36984, 39178, 41373, 43567, 45761, 47955, 50149, 52343, 54537, 56731, 58925, 61119, 63313,
             65507, 67701, 69895, 72089, 74283, 76477, 78671, 80865, 83059, 85253, 87447, 89641, 91835, 94029, 96223, 98417, 100611, 102805, 104999, 107193]
    data2 = [0, 6338, 6981, 7624, 8267, 8910, 9553, 10196, 10839, 11482, 12125, 12769, 13412, 14055, 14698, 15341, 15984, 16627, 17270, 17913, 18556,
             19199, 19842, 20485, 21128, 21771, 22414, 23057, 23700, 24343, 24986, 25629, 26272, 26916, 27559, 28202, 28845, 29488, 30131, 30774, 31417]
    data3 = [0, 38031, 41889, 45748, 49606, 53464, 57322, 61181, 65039, 68897, 72755, 76614, 80472, 84330, 88189, 92047, 95905, 99763, 103622, 107480, 111338,
             115196, 119055, 122913, 126771, 130629, 134488, 138346, 142204, 146063, 149921, 153779, 157637, 161496, 165354, 169212, 173070, 176929, 180787, 184645, 188503]
    data0 = [data1, data2, data3]
    次数 = [1, 4, 1]


class 极诣·驭剑士技能27(极诣·驭剑士主动技能):
    名称 = '誓约之引：万剑之巅'
    所在等级 = 100
    等级上限 = 40
    基础等级 = 2
    CD = 290.0
    data1 = [0, 15707, 19350, 22992, 26634, 30277, 33919, 37562, 41204, 44846, 48489, 52131, 55774, 59416, 63058, 66701, 70343, 73985, 77628, 81270, 84913,
             88555, 92197, 95840, 99482, 103125, 106767, 110409, 114052, 117694, 121336, 124979, 128621, 132264, 135906, 139548, 143191, 146833, 150476, 154118]
    data2 = [0, 109954, 135451, 160947, 186444, 211941, 237437, 262934, 288431, 313928, 339424, 364921, 390418, 415914, 441411, 466908, 492404, 517901, 543398, 568895,
             594391, 619888, 645385, 670881, 696378, 721875, 747371, 772868, 798365, 823861, 849358, 874855, 900352, 925848, 951345, 976842, 1002338, 1027835, 1053332, 1078828]
    data3 = [0, 9424, 11610, 13795, 15980, 18166, 20351, 22537, 24722, 26908, 29093, 31278, 33464, 35649, 37835, 40020, 42206, 44391, 46576, 48762,
             50947, 53133, 55318, 57504, 59689, 61875, 64060, 66245, 68431, 70616, 72802, 74987, 77173, 79358, 81543, 83729, 85914, 88100, 90285, 92471]
    data0 = [data1, data2, data3]
    次数 = [4, 1, 15]

    关联技能 = ['无']

    def 加成倍率(self, 武器类型):
        return 0.0


极诣·驭剑士技能列表 = []
i = 0
while i >= 0:
    try:
        exec('极诣·驭剑士技能列表.append(极诣·驭剑士技能'+str(i)+'())')
        i += 1
    except:
        i = -1

极诣·驭剑士技能序号 = dict()
for i in range(len(极诣·驭剑士技能列表)):
    极诣·驭剑士技能序号[极诣·驭剑士技能列表[i].名称] = i

极诣·驭剑士一觉序号 = 0
极诣·驭剑士二觉序号 = 0
极诣·驭剑士三觉序号 = 0
for i in 极诣·驭剑士技能列表:
    if i.所在等级 == 50:
        极诣·驭剑士一觉序号 = 极诣·驭剑士技能序号[i.名称]
    if i.所在等级 == 85:
        极诣·驭剑士二觉序号 = 极诣·驭剑士技能序号[i.名称]
    if i.所在等级 == 100:
        极诣·驭剑士三觉序号 = 极诣·驭剑士技能序号[i.名称]

极诣·驭剑士护石选项 = ['无']
for i in 极诣·驭剑士技能列表:
    if i.是否有伤害 == 1 and i.是否有护石 == 1:
        极诣·驭剑士护石选项.append(i.名称)

极诣·驭剑士符文选项 = ['无']
for i in 极诣·驭剑士技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1:
        极诣·驭剑士符文选项.append(i.名称)


class 极诣·驭剑士角色属性(角色属性):

    实际名称 = '极诣·驭剑士'
    角色 = '鬼剑士(女)'
    职业 = '驭剑士'

    武器选项 = ['巨剑', '短剑', '太刀', '钝器']

    类型选择 = ['物理百分比']

    类型 = '物理百分比'
    防具类型 = '轻甲'
    防具精通属性 = ['力量']

    主BUFF = 1.71
    武器类型 = '巨剑'

    破剑阵开关 = 0
    钻头蓄力开关 = 0
    魔剑降临 = 0
    魔剑堆叠层数 = 0
    冰刀三绝斩倍率 = 1

    def __init__(self):
        基础属性输入(self)
        self.技能栏 = deepcopy(极诣·驭剑士技能列表)
        self.技能序号 = deepcopy(极诣·驭剑士技能序号)

    def 被动倍率计算(self):
        if self.技能栏[self.技能序号['雷鸣千军破']].是否装备护石 == 1:
            if self.武器类型 == '钝器':
                self.技能栏[self.技能序号['雷鸣千军破']].次数[3] = 1
        for i in ['血影之太刀精通', '魔性之短剑精通', '毁灭之巨剑精通', '波动之钝器精通']:
            if self.武器类型 not in i:
                self.技能栏[self.技能序号[i]].关联技能 = ['无']

        super().被动倍率计算()

        if self.武器类型 == '巨剑':
            temp = self.技能栏[self.技能序号['毁灭之巨剑精通']]
            self.技能栏[self.技能序号['破军旋舞斩']].被动倍率 *= temp.额外倍率1()
            次数 = copy(self.技能栏[self.技能序号['恶即斩']].次数)
            次数[1] *= temp.额外倍率2()
            self.技能栏[self.技能序号['恶即斩']].次数 = copy(次数)
        elif self.武器类型 == '短剑':
            temp = self.技能栏[self.技能序号['魔性之短剑精通']]
            self.技能栏[self.技能序号['魔剑奥义']].被动倍率 *= (1 + 0.65 + 0.25) / 2  # 双魔剑平均值
            self.技能栏[self.技能序号['魔剑奥义']].短精CD = temp.魔剑奥义CD倍率()
            # 1.3倍CD估算次数
            次数输入 = copy(self.次数输入)
            if '/CD' in 次数输入[self.技能序号['魔剑奥义']]:
                次数输入[self.技能序号['魔剑奥义']] = str(eval(次数输入[self.技能序号['魔剑奥义']].replace('/CD', str(
                    2 * int(self.时间输入 / (self.技能栏[self.技能序号['魔剑奥义']].等效CD(self.武器类型, self.类型) * 1.3) + 1)))))
            self.次数输入 = copy(次数输入)
        elif self.武器类型 == '钝器':
            temp = self.技能栏[self.技能序号['波动之钝器精通']]
            self.技能栏[self.技能序号['幻剑术']].次数[1] = 6 * temp.额外倍率2()
            self.技能栏[self.技能序号['穿云破空剑']].次数[2] = 1 * temp.额外倍率3()
            self.技能栏[self.技能序号['雷鸣千军破']].被动倍率 *= temp.额外倍率1()
        elif self.武器类型 == '太刀':
            temp = self.技能栏[self.技能序号['血影之太刀精通']]
            self.技能栏[self.技能序号['瞬影三绝斩']].攻击次数 *= 4 / 3
            self.技能栏[self.技能序号['帝国剑术']].被动倍率 *= 1.26
            self.技能栏[self.技能序号['魔剑降临']].被动倍率 *= temp.额外倍率1()

        # 降临选择
        self.技能栏[self.技能序号['魔剑降临']].次数 = [0, 0, 0, 0]
        self.技能栏[self.技能序号['魔剑奥义']].次数 = [0, 0, 0, 0]
        self.技能栏[self.技能序号['魔剑降临']].次数[self.魔剑降临] = 1
        self.技能栏[self.技能序号['魔剑奥义']].次数[self.魔剑降临] = 1

        # 破剑阵瞬爆
        if self.破剑阵开关 == 1:
            self.技能栏[self.技能序号['破剑阵']].次数 = [0, 0, 0, 8]

        # 飓风魔剑
        temp = self.技能栏[self.技能序号['飓风魔剑']]
        if self.钻头蓄力开关 != 1:
            temp.次数[0] = 30 * (1 + temp.魔剑增加量 * min(self.魔剑堆层数, temp.魔剑层数上限))
        else:
            temp.次数[0] = 40 * (1 + temp.魔剑增加量 * min(self.魔剑堆层数, temp.魔剑层数上限))

        temp.额外百分比 = min(self.魔剑堆层数, temp.魔剑层数上限) * \
            self.技能栏[self.技能序号['魔剑奥义']].等效百分比(self.武器类型)
        if self.魔剑降临 == 3:
            temp.额外百分比 += self.技能栏[self.技能序号['魔剑奥义']
                                   ].等效百分比(self.武器类型) * 10 * (0.09 + temp.等级/100)

        # 冰刀三绝斩
        if self.魔剑降临 == 1:
            self.技能栏[self.技能序号['瞬影三绝斩']].被动倍率 *= self.冰刀三绝斩倍率

    def 站街物理攻击力(self):
        站街物理攻击 = self.物理攻击力
        if self.技能栏[self.技能序号['帝皇盟约']].等级 != 0:
            站街物理攻击 *= self.技能栏[self.技能序号['帝皇盟约']].物理攻击力倍率(self.武器类型)
            站街物理攻击 = int(站街物理攻击)
        for i in self.技能栏:
            if i.名称 != '帝皇盟约':
                try:
                    站街物理攻击 *= i.物理攻击力倍率(self.武器类型)
                except:
                    pass
        return 站街物理攻击

    def 面板物理攻击力(self):
        面板物理攻击 = self.物理攻击力 + self.进图物理攻击力
        if self.技能栏[self.技能序号['帝皇盟约']].等级 != 0:
            面板物理攻击 *= self.技能栏[self.技能序号['帝皇盟约']].物理攻击力倍率(self.武器类型)
            面板物理攻击 = int(面板物理攻击)
        for i in self.技能栏:
            if i.名称 != '帝皇盟约':
                try:
                    面板物理攻击 *= i.物理攻击力倍率(self.武器类型)
                except:
                    pass
        面板物理攻击 *= (1 + self.百分比三攻) * (1 + self.年宠技能 * 0.10 +
                                      self.斗神之吼秘药 * 0.12 + self.白兔子技能 * 0.20)
        return 面板物理攻击


class 极诣·驭剑士(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 极诣·驭剑士角色属性()
        self.角色属性A = 极诣·驭剑士角色属性()
        self.角色属性B = 极诣·驭剑士角色属性()
        self.一觉序号 = 极诣·驭剑士一觉序号
        self.二觉序号 = 极诣·驭剑士二觉序号
        self.三觉序号 = 极诣·驭剑士三觉序号
        self.护石选项 = deepcopy(极诣·驭剑士护石选项)
        self.符文选项 = deepcopy(极诣·驭剑士符文选项)

    def 护石判断(self):
        sign = 0
        for x in range(3):
            if self.护石栏[x].currentText() == '飓风魔剑':
                sign = 1
        if sign == 1:
            self.钻头蓄力开关.setChecked(False)
            self.钻头蓄力开关.setDisabled(True)
        else:
            self.钻头蓄力开关.setChecked(True)
            self.钻头蓄力开关.setDisabled(False)

    def 界面(self):
        super().界面()
        for i in range(3):
            self.护石栏[i].currentIndexChanged.connect(lambda state: self.护石判断())
        self.魔剑降临选择 = MyQComboBox(self.main_frame2)
        self.魔剑降临选择.addItem('魔剑降临：火')
        self.魔剑降临选择.addItem('魔剑降临：冰')
        self.魔剑降临选择.addItem('魔剑降临：光')
        self.魔剑降临选择.addItem('魔剑降临：暗')
        self.魔剑降临选择.setCurrentIndex(1)
        self.魔剑降临选择.resize(120, 20)
        self.魔剑降临选择.move(325, 420)

        self.魔剑堆层数选择 = MyQComboBox(self.main_frame2)
        self.魔剑堆层数选择.addItem('魔剑堆：0层')
        self.魔剑堆层数选择.addItem('魔剑堆：1层')
        self.魔剑堆层数选择.addItem('魔剑堆：2层')
        self.魔剑堆层数选择.addItem('魔剑堆：3层')
        self.魔剑堆层数选择.addItem('魔剑堆：4层')
        self.魔剑堆层数选择.addItem('魔剑堆：5层')
        self.魔剑堆层数选择.setCurrentIndex(1)
        self.魔剑堆层数选择.resize(120, 20)
        self.魔剑堆层数选择.move(325, 450)

        self.破剑阵开关 = QCheckBox('破剑阵瞬爆', self.main_frame2)
        self.破剑阵开关.resize(100, 20)
        self.破剑阵开关.move(335, 490)
        self.破剑阵开关.setStyleSheet(复选框样式)
        self.破剑阵开关.setChecked(True)

        self.钻头蓄力开关 = QCheckBox('飓风魔剑蓄力', self.main_frame2)
        self.钻头蓄力开关.resize(100, 20)
        self.钻头蓄力开关.move(335, 520)
        self.钻头蓄力开关.setStyleSheet(复选框样式)
        self.钻头蓄力开关.setChecked(True)

        self.一觉CD = QCheckBox('时空斩CD-10%', self.main_frame2)
        self.一觉CD.resize(100, 20)
        self.一觉CD.move(335, 550)
        self.一觉CD.setStyleSheet(复选框样式)

        self.冰刀三绝斩倍率 = MyQComboBox(self.main_frame2)
        for i in range(61):
            self.冰刀三绝斩倍率.addItem('冰三绝斩：'+str(i * 2)+'%')
        self.冰刀三绝斩倍率.setCurrentIndex(7)
        self.冰刀三绝斩倍率.resize(120, 20)
        self.冰刀三绝斩倍率.move(325, 580)
        self.冰刀三绝斩倍率.setToolTip('请根据自己实测选择')

        self.职业存档.append(('破剑阵开关', self.破剑阵开关, 0))
        self.职业存档.append(('钻头蓄力开关', self.钻头蓄力开关, 0))
        self.职业存档.append(('一觉CD', self.一觉CD, 0))
        self.职业存档.append(('魔剑降临选择', self.魔剑降临选择, 1))
        self.职业存档.append(('魔剑堆层数选择', self.魔剑堆层数选择, 1))
        self.职业存档.append(('冰刀三绝斩倍率', self.冰刀三绝斩倍率, 1))

    def 输入属性(self, 属性, x=0):
        super().输入属性(属性, x)
        if self.破剑阵开关.isChecked():
            属性.技能栏[属性.技能序号['破剑阵']].次数 = [0, 0, 0, 8]

        if self.钻头蓄力开关.isChecked():
            属性.钻头蓄力开关 = 1

        if self.一觉CD.isChecked():
            属性.技能冷却缩减(1, 48, 0.10)
            属性.技能冷却缩减(55, 100, 0.10)

        属性.魔剑堆层数 = self.魔剑堆层数选择.currentIndex()
        属性.魔剑降临 = self.魔剑降临选择.currentIndex()
        属性.冰刀三绝斩倍率 = self.冰刀三绝斩倍率.currentIndex() / 50 + 1
